home *** CD-ROM | disk | FTP | other *** search
/ Sprite 1984 - 1993 / Sprite 1984 - 1993.iso / src / lib / c / unixSyscall / RCS / mknod.c,v < prev    next >
Text File  |  1991-12-10  |  3KB  |  164 lines

  1. head     1.3;
  2. branch   ;
  3. access   ;
  4. symbols  sprited:1.1.1;
  5. locks    ; strict;
  6. comment  @ * @;
  7.  
  8.  
  9. 1.3
  10. date     88.06.29.15.41.05;  author ouster;  state Exp;
  11. branches ;
  12. next     1.2;
  13.  
  14. 1.2
  15. date     88.06.21.17.14.35;  author ouster;  state Exp;
  16. branches ;
  17. next     1.1;
  18.  
  19. 1.1
  20. date     88.06.19.14.31.38;  author ouster;  state Exp;
  21. branches 1.1.1.1;
  22. next     ;
  23.  
  24. 1.1.1.1
  25. date     91.12.10.15.52.48;  author kupfer;  state Exp;
  26. branches ;
  27. next     ;
  28.  
  29.  
  30. desc
  31. @@
  32.  
  33.  
  34. 1.3
  35. log
  36. @No longer need to include kernel/fs.h
  37. @
  38. text
  39. @/* 
  40.  * mknod.c --
  41.  *
  42.  *    Procedure to map from Unix mknod system call to Sprite.
  43.  *
  44.  * Copyright (C) 1986 Regents of the University of California
  45.  * All rights reserved.
  46.  */
  47.  
  48. #ifndef lint
  49. static char rcsid[] = "$Header: mknod.c,v 1.2 88/06/21 17:14:35 ouster Exp $ SPRITE (Berkeley)";
  50. #endif not lint
  51.  
  52. #include "sprite.h"
  53. #include "fs.h"
  54. #include "compatInt.h"
  55. #include <errno.h>
  56. #include <sys/file.h>
  57. #include <sys/types.h>
  58. #include <sys/stat.h>
  59.  
  60.  
  61. /*
  62.  *----------------------------------------------------------------------
  63.  *
  64.  * mknod --
  65.  *
  66.  *    Procedure to map from Unix mkdir system call to Sprite Fs_MakeDevice.
  67.  *    Unfortunately, this doesn't map from Unix land device types to
  68.  *    Sprite device types.  This means a tar of /dev on a UNIX system
  69.  *    will not be recreated correctly on a Sprite system, unless the
  70.  *    tar program itself is fixed.
  71.  *
  72.  * Results:
  73.  *    UNIX_ERROR is returned upon error, with the actual error code
  74.  *    stored in errno.  Otherwise UNIX_SUCCESS is returned.
  75.  *
  76.  * Side effects:
  77.  *    Creates a special file used to refer to a device.
  78.  *
  79.  *----------------------------------------------------------------------
  80.  */
  81.  
  82. int
  83. mknod(pathName, mode, dev)
  84.     char *pathName;        /* The name of the directory to create */
  85.     int mode;            /* Permission mask plus type */
  86.     int dev;            /* Specifies minor and major dev numbers */
  87. {
  88.     ReturnStatus status;    /* result returned by Fs_Open */
  89.     int streamID;
  90.  
  91.     switch (mode & S_IFMT) {
  92.     case S_IFREG:
  93.         status = Fs_Open(pathName, FS_CREATE, mode & 0777, &streamID);
  94.         if (status == SUCCESS) {
  95.         (void)close(streamID);
  96.         }
  97.         break;
  98.     case S_IFBLK:
  99.     case S_IFCHR: {
  100.         Fs_Device device;
  101.  
  102.         device.serverID = FS_LOCALHOST_ID;
  103.         device.type = major(dev);
  104.         device.unit = minor(dev);
  105.  
  106.         status = Fs_MakeDevice(pathName, &device, mode & 0777);
  107.         break;
  108.     }
  109.     default:
  110.         errno = EINVAL;
  111.         return(UNIX_ERROR);
  112.     }
  113.      if (status != SUCCESS) {
  114.     errno = Compat_MapCode(status);
  115.     return(UNIX_ERROR);
  116.     } else {
  117.     return(UNIX_SUCCESS);
  118.     }
  119. }
  120. @
  121.  
  122.  
  123. 1.2
  124. log
  125. @Forget you ever heard about FIFOs.
  126. @
  127. text
  128. @d11 1
  129. a11 1
  130. static char rcsid[] = "$Header: mknod.c,v 1.1 88/06/19 14:31:38 ouster Exp $ SPRITE (Berkeley)";
  131. a15 1
  132. #include "kernel/fs.h"
  133. @
  134.  
  135.  
  136. 1.1
  137. log
  138. @Initial revision
  139. @
  140. text
  141. @d11 1
  142. a11 1
  143. static char rcsid[] = "$Header: mknod.c,v 1.3 87/06/04 13:44:47 brent Exp $ SPRITE (Berkeley)";
  144. a71 7
  145.     case S_IFIFO:
  146.         status = Fs_Open(pathName, FS_CREATE|FS_NAMED_PIPE_OPEN,
  147.             mode & 0777, &streamID);
  148.         if (status == SUCCESS) {
  149.         (void)close(streamID);
  150.         }
  151.         break;
  152. @
  153.  
  154.  
  155. 1.1.1.1
  156. log
  157. @Initial branch for Sprite server.
  158. @
  159. text
  160. @d11 1
  161. a11 1
  162. static char rcsid[] = "$Header: /sprite/src/lib/c/unixSyscall/RCS/mknod.c,v 1.1 88/06/19 14:31:38 ouster Exp $ SPRITE (Berkeley)";
  163. @
  164.